#pragma once

namespace a2d
{
//------------------------------------------------------------------

	static const GLint internalFormats[] = 
	{
		0,
		// Unsigned formats
		GL_INTENSITY8,
		GL_LUMINANCE8_ALPHA8,
		GL_RGB8,
		GL_RGBA8,

		GL_INTENSITY16,
		GL_LUMINANCE16_ALPHA16,
		GL_RGB16,
		GL_RGBA16,

		// Signed formats
		0,
		0,
		0,
		0,

		0,
		0,
		0,
		0,

		// Float formats
		GL_INTENSITY_FLOAT16_ATI,
		GL_LUMINANCE_ALPHA_FLOAT16_ATI,
		GL_RGB_FLOAT16_ATI,
		GL_RGBA_FLOAT16_ATI,

		GL_INTENSITY_FLOAT32_ATI,
		GL_LUMINANCE_ALPHA_FLOAT32_ATI,
		GL_RGB_FLOAT32_ATI,
		GL_RGBA_FLOAT32_ATI,

		// Signed integer formats
		0, // GL_INTENSITY16I_EXT,
		0, // GL_LUMINANCE_ALPHA16I_EXT,
		0, // GL_RGB16I_EXT,
		0, // GL_RGBA16I_EXT,

		0, // GL_INTENSITY32I_EXT,
		0, // GL_LUMINANCE_ALPHA32I_EXT,
		0, // GL_RGB32I_EXT,
		0, // GL_RGBA32I_EXT,

		// Unsigned integer formats
		0, // GL_INTENSITY16UI_EXT,
		0, // GL_LUMINANCE_ALPHA16UI_EXT,
		0, // GL_RGB16UI_EXT,
		0, // GL_RGBA16UI_EXT,

		0, // GL_INTENSITY32UI_EXT,
		0, // GL_LUMINANCE_ALPHA32UI_EXT,
		0, // GL_RGB32UI_EXT,
		0, // GL_RGBA32UI_EXT,

		// Packed formats
		0, // RGBE8 not directly supported
		0, // GL_RGB9_E5,
		0, // GL_R11F_G11F_B10F,
		GL_RGB5,
		GL_RGBA4,
		GL_RGB10_A2,

		// Depth formats
		GL_DEPTH_COMPONENT16,
		GL_DEPTH_COMPONENT24,
		GL_DEPTH24_STENCIL8_EXT,
		0, // GL_DEPTH_COMPONENT32F,

		// Compressed formats
		GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
		GL_COMPRESSED_RGBA_S3TC_DXT3_EXT,
		GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,
		0, // ATI1N not yet supported
		GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI,
	};

	static const GLenum srcFormats[] =
	{ 
		0, 
		GL_LUMINANCE, 
		GL_LUMINANCE_ALPHA, 
		GL_RGB, GL_RGBA };

	static const GLenum srcTypes[] =
	{
		0,
		// Unsigned formats
		GL_UNSIGNED_BYTE,
		GL_UNSIGNED_BYTE,
		GL_UNSIGNED_BYTE,
		GL_UNSIGNED_BYTE,

		GL_UNSIGNED_SHORT,
		GL_UNSIGNED_SHORT,
		GL_UNSIGNED_SHORT,
		GL_UNSIGNED_SHORT,

		// Signed formats
		0,
		0,
		0,
		0,

		0,
		0,
		0,
		0,

		// Float formats
		0,//GL_HALF_FLOAT_ARB,
		0,//GL_HALF_FLOAT_ARB,
		0,//GL_HALF_FLOAT_ARB,
		0,//GL_HALF_FLOAT_ARB,

		GL_FLOAT,
		GL_FLOAT,
		GL_FLOAT,
		GL_FLOAT,

		// Signed integer formats
		0,
		0,
		0,
		0,

		0,
		0,
		0,
		0,

		// Unsigned integer formats
		0,
		0,
		0,
		0,

		0,
		0,
		0,
		0,

		// Packed formats
		0, // RGBE8 not directly supported
		0, // RGBE9E5 not supported
		0, // RG11B10F not supported
		GL_UNSIGNED_SHORT_5_6_5,
		GL_UNSIGNED_SHORT_4_4_4_4_REV,
		GL_UNSIGNED_INT_2_10_10_10_REV,

		// Depth formats
		GL_UNSIGNED_SHORT,
		GL_UNSIGNED_INT,
		GL_UNSIGNED_INT_24_8_EXT,
		0, // D32F not supported

		// Compressed formats
		0,
		0,
		0,
		0,
		0,
	};

//------------------------------------------------------------------
} // namespace a2d
